//需实现功能：分前后台
//2前台：客户购物
//3开具发票
//4给出邮寄填写模版【收件人，地址，邮编，电话，订单号】
//5提供给顾客支付信息（支付渠道；微信支付/支付宝 付款账户 顾客编号；收款账户 杨国福麻辣烫）
//6后台：管理员专用，设置密码。
//7查阅发票：确认是否发货（实时比对是否缺货），如发货，生成订单号
//8打印邮寄信息（货品专用）
//9对库存信息维护
//10库存不足自动给出提示，敦促进货
//11生成三大报表（已完成订单，未付款订单，未发货订单）
//总结；先选择进入顾客/管理界面/退出系统
//顾客先在给出的商品中选择一个商品1.撒尿牛丸（单价）2.豆腐干3.鸭血4.羊肉片
//正在加载撒尿牛丸的商品信息......
//--------------------------------
//名称：撒尿牛丸
//产品分类：肉制品（01A）
//价格：16元/500g
//生产厂家：安心食品厂（A65）
//--------------------------------
//名称：豆腐干
//产品分类：豆制品（02B）
//价格：15元/500g
//生产厂家：便民食品厂（A65）
//--------------------------------
//--------------------------------
//名称：鸭血
//产品分类：血制品（03C）
//价格：6元/500g
//生产厂家：第六食品公司（B77）
//--------------------------------
//--------------------------------
//名称：羊肉片
//产品分类：肉制品（01A）
//价格：15元/500g
//生产厂家：安心食品厂（A65）
//--------------------------------
//请您根据下列提示填写个人信息与订单信息
//尊敬的顾客9527
//姓名：
//收货地址：
//邮政编号；
//联系电话；
//运输方式:1.AA快递 2.gogo物流 3.兔子速递
//已选择 撒尿牛丸 500g，份（请输入您准备购买的份数）
//是否同意开具发票？
//确认支付？ 1.是/2.否
//支付成功
//正在生成本次支付信息
//本次订单编号：20150425659527
//付款账户；顾客9527
//收款账户：杨国福麻辣烫
//支付渠道：微信支付
//下单日期：2015年4月25日
//收货地址：
//运费：
//付款金额：
//运输方式：
//温馨提示：请您在核对无误后再退出系统。
//1.查看订单细则   2.订购更多商品   3.退出系统（返回初始页） 
//----------订单细则----------
//细则编号：01A201504259527
//订单号：20150425659527
//产品分类编号：
//生产厂：
//数量：
//总金额：
//----------------------------
//开具发票
//我要做的

//管理在进入界面后可以根据提示
//1.订单管理  2.查询库存  3.信息查询
//如果选择1
//订单加载中.......
//订单号：20150425659527
//产品分类编号：
//客户：顾客9527
//下单日期：4月25日
//运输要求：
//运输日期：
//货物总重：
//运费：
//付款清单：
//能否供货：1.能 2.不能
//能供货
//1开始发货  2.拒绝发货
//3查看发票
//是否打印发票1.是2.否
//如果选择查询库存
//撒尿牛丸 库存：1652份
//豆腐干   库存：627份
//鸭血     库存：501份
//羊肉片   库存：623盒
//1.联系厂家进货 2.返回主页
//联系厂家
//如果选择信息查询
//生成报表
#include<stdio.h>
#include<windows.h>
struct customer
{
	char name[20];
	char adress[100];
	char postcode[6];
	char phone[11];
	char payment[20];
	int number;
	int money;
};
void pay(char option[],char payment[],char adress[],int money)
{
   //option决定是否进入支付信息界面
    system("cls");
	printf("正在生成本次支付信息....");
	printf("----------------------------");
	printf("本次订单编号：G2565\n");
	printf("付款账户；顾客9527\n");
	printf("收款账户：杨国福麻辣烫\n");
	printf("支付渠道:%s\n",payment);
	printf("下单日期：2015年4月25日\n");
	printf("收货地址：%s\n",adress);
	printf("运费：7元\n");
	printf("付款金额：%d\n",money);
	printf("运输方式：gogo物流\n");
	printf("温馨提示：请您在核对无误后再退出系统。\n");
	printf("1.查看订单细则   2.订购更多商品   3.退出系统（返回初始页）");
	printf("您的选择是\n");
	printf("----------------------------");
}
void order(char sort[],int number)
{
	char code[20];
	char product[20];
	int money;
	if(strcmp(sort,"1") == 0)
	{
		char code1[] = "01A";
		char product1[] = "安心食品厂";
		strcpy(code,code1);
		strcpy(product,product1);
		money = 16 * number;
	}
	else if(strcmp(sort,"2") == 0)
	{
		char code2[] = "02B";
		char product2[] = "便民食品厂";
		strcpy(code,code2);
		strcpy(product,product2);
		money = 12 * number;
	}
	else if(strcmp(sort,"3") == 0)
	{
		char code3[] = "03C";
		char product3[] = "第六食品公司";
		strcpy(code,code3);
		strcpy(product,product3);
		money = 6 * number;
	}
	else if(strcmp(sort,"4") == 0)
	{
		char code4[] = "01A";
		char product4[] = "第六食品公司";
		strcpy(code,code4);
		strcpy(product,product4);
		money = 21 * number;
	}
	printf("----------订单细则----------");
	printf("细则编号：01A201504259527");
	printf("订单号：G2565\n");
	printf("产品分类编号：%s\n",code);
	printf("生产厂\n",product);
	printf("数量：\n",number);
	printf("总金额：\n",money);
	printf("----------------------------");
}
char storage1(char data[],int option)
{
	char payment[20];
	if(option == 1)
	{
	strcpy(payment,data);	
	}
    return payment[20];
}
char storage2(char data[],int option)
{
	char adress[20];
	if(option == 1)
	{
	strcpy(adress,data);	
	}
    return adress[20];
}
int storage3(int data,int option)
{
	int money;
	if(option == 1)
	{
	money = data;	
	}
    return money;
}
int storage4(int data,int option)
{
	int number;
	if(option == 1)
	{
	number = data;	
	}
    return number;
}
void Shopping(char option[],FILE *fp)//需查询邮寄信息
{
    int flag4 = 1;
    while(flag4 == 1)
    {
    	int store = 1;
    	struct customer csr;
    	system("cls");
    	printf("请您根据下列提示填写个人信息与订单信息\n");
	    printf("尊敬的顾客9527\n");
        printf("姓名:");
        gets(csr.name);
        printf("\n收货地址：");
        gets(csr.adress);
        char data2 = storage2(csr.adress,store);
        printf("\n邮政编号");
        gets(csr.postcode);
        printf("\n联系电话");
        gets(csr.phone);
        printf("\n付款方式为");
        gets(csr.payment);
        char data1 = storage1(csr.payment,store);
        printf("\n默认运输方式：gogo物流");
        if(strcmp(option,"1")==0)
	    {
		    printf("已选择 撒尿牛丸 500g, 份数为");
		    scanf("%d",&csr.number);
		    csr.money=16*csr.number;
		    
	    }
	    else if(strcmp(option,"2") == 0)
	    {
		    printf("已选择 豆腐干 500g,份数为 ");
		    scanf("%d",&csr.number);
		    csr.money=15*csr.number;
		    
	    }
	    else if(strcmp(option,"3") == 0)
	    {
	        printf("已选择 鸭血 500g,份数为");
		    scanf("%d",&csr.number);
		    csr.money=6*csr.number;
		    
	    }
	    else if(strcmp(option,"4") == 0)
	    {
		    printf("已选择 羊肉片 500g,份数为 ");
		    scanf("%d",&csr.number);
		    csr.money=23*csr.number;
		    
	    }
	    if((fp = fopen("pay.txt","wb")) == NULL)
	    {
		    printf("open error111\n");
		    exit(1);
	    }
	    fwrite(&csr,sizeof(struct customer),1,fp);
		fclose(fp);
	    printf("共计%dg,应付款金额%d\n",500*csr.number,csr.money);
        printf("1.确认支付     2.取消支付\n");
        flag4 =0;
    }
    system("pause");
}
void Customer(char option[])
{
    int flag2 = 1;//flag2决定是否停留在今日商品界面
    while(flag2 == 1)
	{
	    if(strcmp(option,"1") == 0)
		{
			
			system("cls");
			printf("正在加载撒尿牛丸的商品信息......\n");
			printf("名称：撒尿牛丸\n");
			printf("产品分类：肉制品(01A) \n");
            printf("价格：16元/500g\n");
            printf("生产厂家：安心食品厂（A65）\n");
			printf("1.购买该商品\n");
		    printf("2.返回上一页\n");
		    printf("您的选择是：\n");
			flag2 = 0;
		}
		else if(strcmp(option,"2") == 0)
		{
			system("cls");
			printf("正在加载豆腐干的商品信息......\n");
			printf("名称：豆腐干\n");
            printf("产品分类：豆制品(02B) \n");
            printf("价格：12元/500g\n");
            printf("生产厂家：便民食品厂(B65) \n");
			printf("1.购买该商品\n");
		    printf("2.返回上一页\n");
		    printf("您的选择是：\n");
			flag2 = 0;
		}
		else if(strcmp(option,"3") == 0)
		{
			system("cls");
			printf("正在加载鸭血的商品信息......\n");
			printf("名称：鸭血\n");
            printf("产品分类：血制品(03C) \n");
            printf("价格：6元/500g\n");
            printf("生产厂家：第六食品公司（C77）\n");
            printf("1.购买该商品\n");
		    printf("2.返回上一页\n");
		    printf("您的选择是：\n");
			flag2 = 0;
		}
		else if(strcmp(option,"4") == 0)
		{
			system("cls");
			printf("正在加载羊肉片的商品信息......\n");
			printf("名称：羊肉片\n");
            printf("产品分类：肉制品(01A) \n");
            printf("价格：21元/500g\n");
            printf("生产厂家：第六食品公司（C77）\n");
            printf("1.购买该商品\n");
		    printf("2.返回上一页\n");
		    printf("您的选择是：\n");
		    flag2 = 0;
		}
	    else
		{
			printf("您输入的选项有误，请仔细核对。\n");
			flag2 = 1;
		}
	    system("pause");
	}
}
void Shoplist(char option[])
{
	if(strcmp(option,"1") == 0)
	{
    	system("cls");
		printf("--------------今日商品--------------\n");
		printf("请摁数字1-4查询您要购买的商品\n");
		printf("1.撒尿牛丸\n");
		printf("2.豆腐干\n");
		printf("3.鸭血\n");
		printf("4.羊肉片\n");
		printf("您要购买的商品是：");
	}
}
void goods(char option1[],char option2[])
{
	if(strcmp(option1,"1") == 0&&strcmp(option2,"1") == 0)
	{
		system("cls");
		printf("该订单已确认，正在调取各地仓储数据\n");
		printf("是否发货\n");
		printf("1.确认发货并打印发票\n");
		printf("2.暂不发货，等待系统自行处理\n");
		char option8[20];
		gets(option8);
		printf("您的选择为：\n");
		if(strcmp(option8,"1") == 0)
		{
			printf("发货成功\n");
			printf("正在展示发票预览\n");
			printf("订单号：G2565\n");
		    printf("产品分类编号：\n");
		    printf("客户9524\n");
		    printf("下单日期：4月25日\n");
		    printf("运输要求：冷藏\n");
		    printf("运输日期：4月28日\n");
		    printf("货物总重：500g\n");
		    printf("运费：6元\n");
		    printf("付款渠道：微信支付\n");
		}
		else if(strcmp(option8,"2") == 0)
		{
			printf("系统正在处理\n");
		}
	}
	else if(strcmp(option1,"1") == 0&&strcmp(option2,"2") == 0)
	{
		
		system("cls");
		printf("该订单已拒绝，系统正在通知顾客\n");
	}
	
}
void Administrator(char option[])
{
	if(strcmp(option,"1") == 0)
	{
		system("cls");
		printf("订单加载中.......\n");
		printf("订单号：G2565\n");
		printf("产品分类编号：\n");
		printf("客户9524\n");
		printf("下单日期：4月25日\n");
		printf("运输要求：冷藏\n");
		printf("运输日期：4月28日\n");
		printf("货物总重：500g\n");
		printf("运费：6元\n");
		printf("付款渠道：微信支付\n");
		printf("能否供货：能\n");
		printf("   ------------        -----------\n");
		printf("1./确认该订单/      2./拒绝该订单/\n");
        printf(" ------------        -----------\n");	
        
	}
	else if(strcmp(option,"2") == 0)
	{
		printf("库存信息加载中.......\n");
	    FILE *file2 = fopen("inventory.txt","r");
	    if (file2 == NULL)
	    {
	    	printf("open error!\n");
	    	
		}
		char buf[1024] = {0};
		while(fgets(buf,1024,file2) != NULL)
		{
			printf("%s",buf);
		}
		fclose(file2);
		
	}
	else if(strcmp(option,"3") == 0)
	{
		printf("正在生成订单报表......\n");
	    FILE *fp;
	char s[100];
	
	if((fp = fopen("order.txt","r")) == NULL)
	{
		printf("open error\n");
		exit(1);
	}
	while(fgets(s,30,fp) !=NULL)
	{
		printf("%s",s);
		
	}
	
	fclose(fp);
	}
	
}  
int main()
{
    FILE *fp1;
    struct customer str;
	char option1[20];
	int flag1 = 1;//flag1决定是否停留在顾客管理菜单
	while(flag1 == 1)
	{
		system("cls");
		printf("-----------杨国福麻辣烫服务系统------------\n");
		printf("---------请用数字1、2表示你的选择----------\n");
		printf("---------1.进入顾客购物界面----------------\n");
		printf("---------2.进入仓储管理界面----------------\n");
	    printf("---------您的选择是：");
		gets(option1);//给出商品清单
		if(strcmp(option1,"1") == 0)
	    {
		    Shoplist(option1);
		    char option2[20];
			gets(option2);
			Customer(option2);//查看商品细则1决定购买2返回商品清单
			char option3[20];
			printf("您的选择是：");
			gets(option3);
		    //选1填写邮寄信息
		    int flag5 = 1;
			while(flag5 ==1)
			{
				if(strcmp(option3,"1") == 0)
			    {
				    Shopping(option2,fp1);
				    flag5 = 0;
			    }
		 	    else if(strcmp(option3,"2") == 0)
				{
					Shoplist(option1);
					flag5 = 0;
				}
				else
				{
        	    	printf("您输入的选项有误，请稍后重试...");
				}
		    }
		    char option4[20];//选1确定支付选2取消支付返回商品细则界面
            printf("您的选择是：");
            getchar();
			gets(option4);
            if(strcmp(option4,"1") == 0)
                {
	            //问题在于变量在主函数中缺失,解决的方法是利用文件储存信息
	            if((fp1 = fopen("pay.txt","wr")) == NULL)
	            {
		            printf("open error000\n");
		            exit(1);
	            }
	            fread(&str,sizeof(struct customer),1,fp1);
	            fclose(fp1);
	            //char payment[20] = {str.payment};
	            //char adress[100] = {str.adress};
	            int number= str.number;
				int money = str.money;
	            //pay(option4,payment,adress,money);//确定支付后会给出商品信息（待完善）
                //1.查看订单细则   2.订购更多商品   3.退出系统（返回初始页）
                char option5[20];//顾客界面最后一步
                printf("您的选择是：");
				gets(option5);
                if (strcmp(option5,"1") == 0)
                    {
                    order(option2,number);
				    }
				else if (strcmp(option5,"2") == 0)
				    {
				    char more[20] = "1";
					printf("正跳转到购物页面........");
					Shoplist(option1);
				    }
				else if (strcmp(option5,"3") == 0)
				    {
					printf("感谢您的使用");
				    }
			    }
			else if(strcmp(option4,"2") == 0)
                {
	            Customer(option2);
                }
            
        flag1 = 0;
	    }
	    else if(strcmp(option1,"2") == 0)
		{
			system("cls");
			printf("--------杨国福麻辣烫仓储管理系统--------\n");
			printf("1.订单管理\n");
			printf("2.查询库存\n");
			printf("3.查询订单报表\n");
			printf("----------------------------------------\n");
			printf("注意！鸭血库存不足，请及时供货\n");
			flag1 = 0;
		    char option6[20];
		    printf("您的选择是：");
		    gets(option6);
		    Administrator(option6);
		    if(strcmp(option6,"3") != 0)
		    {
			char option7[20];
		    printf("您的选择是：");
		    gets(option7); 
		    goods(option6,option7);
		    }
	    }
		else
		{
			printf("您输入的选项有误，请仔细核对。\n");
		}
		system("pause");
		
	}
	return 0;
}
